home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 3.iso / dist / fw_qt3.idb / usr / freeware / Qt / include / qwidgetfactory.h.z / qwidgetfactory.h
C/C++ Source or Header  |  2002-04-08  |  5KB  |  144 lines

  1.  /**********************************************************************
  2. ** Copyright (C) 2000 Trolltech AS.  All rights reserved.
  3. **
  4. ** This file is part of Qt Designer.
  5. **
  6. ** This file may be distributed and/or modified under the terms of the
  7. ** GNU General Public License version 2 as published by the Free Software
  8. ** Foundation and appearing in the file LICENSE.GPL included in the
  9. ** packaging of this file.
  10. **
  11. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  12. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  13. **
  14. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  15. **
  16. ** Contact info@trolltech.com if any conditions of this licensing are
  17. ** not clear to you.
  18. **
  19. **********************************************************************/
  20.  
  21. #ifndef QWIDGETFACTORY_H
  22. #define QWIDGETFACTORY_H
  23.  
  24. #ifndef QT_H
  25. #include <qstring.h>
  26. #include <qptrlist.h>
  27. #include <qimage.h>
  28. #include <qpixmap.h>
  29. #include <qvaluelist.h>
  30. #include <qmap.h>
  31. #include <qaction.h>
  32. #endif // QT_H
  33.  
  34. class QWidget;
  35. class QLayout;
  36. class QDomElement;
  37. class QListViewItem;
  38. class QTable;
  39.  
  40. class QWidgetFactory
  41. {
  42. public:
  43.     QWidgetFactory();
  44.     virtual ~QWidgetFactory();
  45.  
  46.     static QWidget *create( const QString &uiFile, QObject *connector = 0, QWidget *parent = 0, const char *name = 0 );
  47.     static QWidget *create( QIODevice *dev, QObject *connector = 0, QWidget *parent = 0, const char *name = 0 );
  48.     static void addWidgetFactory( QWidgetFactory *factory );
  49.     static void loadImages( const QString &dir );
  50.  
  51.     virtual QWidget *createWidget( const QString &className, QWidget *parent, const char *name ) const;
  52.  
  53. private:
  54.     enum LayoutType { HBox, VBox, Grid, NoLayout };
  55.     void loadImageCollection( const QDomElement &e );
  56.     void loadConnections( const QDomElement &e, QObject *connector );
  57.     void loadTabOrder( const QDomElement &e );
  58.     QWidget *createWidgetInternal( const QDomElement &e, QWidget *parent, QLayout* layout, const QString &classNameArg );
  59.     QLayout *createLayout( QWidget *widget, QLayout*  layout, LayoutType type );
  60.     LayoutType layoutType( QLayout *l ) const;
  61.     void setProperty( QObject* widget, const QString &prop, const QDomElement &e );
  62.     void createSpacer( const QDomElement &e, QLayout *layout );
  63.     QImage loadFromCollection( const QString &name );
  64.     QPixmap loadPixmap( const QDomElement &e );
  65.     QColorGroup loadColorGroup( const QDomElement &e );
  66.     void createColumn( const QDomElement &e, QWidget *widget );
  67.     void loadItem( const QDomElement &e, QPixmap &pix, QString &txt, bool &hasPixmap );
  68.     void createItem( const QDomElement &e, QWidget *widget, QListViewItem *i = 0 );
  69.     void loadChildAction( QObject *parent, const QDomElement &e );
  70.     void loadActions( const QDomElement &e );
  71.     void loadToolBars( const QDomElement &e );
  72.     void loadMenuBar( const QDomElement &e );
  73.     void loadFunctions( const QDomElement &e );
  74.     QAction *findAction( const QString &name );
  75.     void loadExtraSource();
  76.     QString translate( const QString& sourceText, const QString& comment = "" );
  77.  
  78. private:
  79.     struct Image {
  80.     QImage img;
  81.     QString name;
  82.     bool operator==(  const Image &i ) const {
  83.         return ( i.name == name &&
  84.              i.img == img );
  85.     }
  86.     };
  87.  
  88.     struct Field
  89.     {
  90.     Field() {}
  91.     Field( const QString &s1, const QPixmap &p, const QString &s2 ) : name( s1 ), pix( p ), field( s2 ) {}
  92.     QString name;
  93.     QPixmap pix;
  94.     QString field;
  95. #if defined(Q_FULL_TEMPLATE_INSTANTIATION)
  96.     bool operator==( const Field& ) const { return FALSE; }
  97. #endif
  98.     };
  99.  
  100.     struct EventFunction
  101.     {
  102.     EventFunction() {}
  103.     EventFunction( const QString &e, const QStringList &f )
  104.         : events( e ) { functions.append( f ); }
  105.     QStringList events;
  106.     QValueList<QStringList> functions;
  107.     };
  108.  
  109.     struct SqlWidgetConnection
  110.     {
  111.     SqlWidgetConnection() {}
  112.     SqlWidgetConnection( const QString &c, const QString &t )
  113.         : conn( c ), table( t ), dbControls( new QMap<QString, QString>() ) {}
  114.     QString conn;
  115.     QString table;
  116.     QMap<QString, QString> *dbControls;
  117.     };
  118.  
  119.     struct Functions
  120.     {
  121.     QString functions;
  122.     };
  123.  
  124.     QValueList<Image> images;
  125.     QWidget *toplevel;
  126.     QListViewItem *lastItem;
  127.     QMap<QString, QString> *dbControls;
  128.     QMap<QString, QStringList> dbTables;
  129.     QMap<QWidget*, SqlWidgetConnection> sqlWidgetConnections;
  130.     QMap<QString, QString> buddies;
  131.     QMap<QTable*, QValueList<Field> > fieldMaps;
  132.     QPtrList<QAction> actionList;
  133.     QMap<QObject *, EventFunction> eventMap;
  134.     QMap<QString, QString> languageSlots;
  135.     QMap<QString, Functions*> languageFunctions;
  136.     QStringList variables;
  137.     QStringList noDatabaseWidgets;
  138.     bool usePixmapCollection;
  139.     int defMargin, defSpacing;
  140.  
  141. };
  142.  
  143. #endif
  144.